using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CodeSoft.Datos;
using CodeSoft.Logica;
using DataLayer;

namespace Codesoft
{
	/// <summary>
	/// Summary description for Miembros.
	/// </summary>
	public class Miembros : System.Web.UI.Page
	{
		//variables locales
		private LstOrganizaciones lstOrg;
		private LstMiembros lstM;
		
		protected System.Web.UI.WebControls.Button btnGuardar;
		protected System.Web.UI.WebControls.DropDownList drpOrganizaciones;
		protected System.Web.UI.WebControls.Label Label4;
		protected System.Web.UI.WebControls.TextBox txtTelefono;
		protected System.Web.UI.WebControls.Label Label3;
		protected System.Web.UI.WebControls.TextBox txtNombre;
		protected System.Web.UI.WebControls.Label Label1;
		protected System.Web.UI.WebControls.Button btnEliminar;
		protected System.Web.UI.WebControls.Button btnNuevo;
		protected System.Web.UI.WebControls.Label lblError;
		protected System.Web.UI.WebControls.ListBox lstMiembros;
		protected System.Web.UI.WebControls.TextBox txtEmail;
		protected System.Web.UI.WebControls.Label Label2;
	
		private void Page_Load(object sender, System.EventArgs e)
		{
			if (! Page.IsPostBack)
				CargarOrganizaciones();
			
			lstM = new LstMiembros();
			CargarMiembros();
		}

		private void CargarMiembros()
		{
			lstM.CargarTodo();
			lstMiembros.Items.Clear();
			Miembro m;
			foreach (Registro reg in lstM)
			{
				m = new Miembro(reg);
				ListItem it = new ListItem(m.Nombre,m.ID.ToString());
				lstMiembros.Items.Add(it);
			}
		
		}

		private void CargarOrganizaciones()
		{
			lstOrg = new LstOrganizaciones();
			lstOrg.CargarTodo();
			Organizacion org;
			drpOrganizaciones.Items.Clear();
			foreach (Registro reg in lstOrg)
			{
				org = new Organizacion(reg);
				ListItem it = new ListItem(org.Nombre,org.ID.ToString());
				drpOrganizaciones.Items.Add(it);
			}
			
		}
		
		private void SetId()
		{ 
			ViewState["id"] = Int32.Parse(Request["lstMiembros"].ToString());
		}
		
		private int GetId()
		{
			if (ViewState["id"] == null)
				return -1;
			else 
				return Int32.Parse(ViewState["id"].ToString());
		}

		#region Web Form Designer generated code
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{    
			this.btnGuardar.Click += new System.EventHandler(this.btnGuardar_Click);
			this.btnEliminar.Click += new System.EventHandler(this.btnEliminar_Click);
			this.btnNuevo.Click += new System.EventHandler(this.btnNuevo_Click);
			this.lstMiembros.SelectedIndexChanged += new System.EventHandler(this.lstMiembros_SelectedIndexChanged);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion

		private void btnGuardar_Click(object sender, System.EventArgs e)
		{
			Miembro m;
			
			if (GetId() != -1)
				m = new Miembro(GetId());
			else
				m = new Miembro();
			
			m.Nombre = txtNombre.Text;
			m.Email = txtEmail.Text;
			m.Telefono = txtTelefono.Text;
			
			if (Request["drpOrganizaciones"]!="")
				m.Organizacion = new Organizacion(Int32.Parse(Request["drpOrganizaciones"]));
			else 
				m.Organizacion = null;
			
			m.Guardar();
			
			LimpiarControles();
			CargarMiembros();
		}

		private void LimpiarControles()
		{
			txtNombre.Text = "";
			txtEmail.Text = "";
			txtTelefono.Text = "";
			drpOrganizaciones.SelectedIndex = -1;
			ViewState["id"] = -1;
		}

		private void lstMiembros_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			SetId();
			Miembro m = new Miembro(GetId());
			txtNombre.Text = m.Nombre;
			txtEmail.Text = m.Email;
			txtTelefono.Text = m.Telefono;
			drpOrganizaciones.SelectedValue = m.Organizacion.ID.ToString();
		}

		private void btnEliminar_Click(object sender, System.EventArgs e)
		{
			lblError.Text = "";
			if (GetId() != -1)
			{
				Organizacion org = new Organizacion(GetId());
				org.Borrar();
				
				LimpiarControles();
				CargarMiembros();
				
			} 
			else
				lblError.Text = "Debes seleccionar un miembro.";
		}

		private void btnNuevo_Click(object sender, System.EventArgs e)
		{
			LimpiarControles();
		}
	}
}
